package com.itgaoshu.springboot_day01.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itgaoshu.springboot_day01.bean.User;
import com.itgaoshu.springboot_day01.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@Controller
//@RestController //@RestController≈@Controller+@ResponseBody
//使用了@RestController注解，所有的Controller方法即使返回值类型为String，返回的不是页面，
// 也就是说Controller方法返回的都是json
public class UserController {
    //依赖注入Service
    @Resource
    UserService userService;
    @RequestMapping("/quick1.do")
    public  String quick1(){
        return "hello";
    }
    @RequestMapping("/selectUsers.do")
    public String selectUsers(Model model,@RequestParam(defaultValue = "1") int pageNum){
        //通过PageHelper调用startPage方法设置查询的页码和每页查询多少条
        PageHelper.startPage(pageNum,2);
        //开始查询
        List<User> users = userService.selectUsers();
        PageInfo pageInfo=new PageInfo(users);
        //将查询的结果以及分页的相关数据封装到pageInfo对象中
        model.addAttribute("pageInfo",pageInfo);
        System.out.print("如果第二次没有输出此句话，说明没有执行该方法，说明就是从缓存中获取数据");
        return "list";
    }
    @RequestMapping("/selectUserById.do")
    public String selectUserById(int id,Model model){
        User user=userService.selectUserById(id);
        model.addAttribute("user",user);
        return "update";
    }
    @RequestMapping("/updateUserById.do")
    public String updateUserById(User user){
        int result=userService.updateUserById(user);
        if(result>0){
           return "redirect:selectUsers.do";//不加重定向就是转发，服务器内部的跳转就会加载properties中的拼接后缀+.html,而重定向是从客户端发起第二次请求，不会+后缀。
        }else {
            return "update";
        }
    }
}
